﻿using System.Collections.Generic;
using System.Threading.Tasks;
using BCEntity.TMS.MallInterface.MallGoodsFreight;

namespace BCData.TMS.MallInterface.MallGoodsFreight
{
    public interface IMallGoodsFreightData
    {
        /// <summary>
        /// 删除商城商品运费记录
        /// </summary>
        /// <param name="mallGoodsFreightId"></param>
        /// <returns></returns>
        Task<bool> DeleteAsync(long mallGoodsFreightId);


        /// <summary>
        /// 获取商城商品运费记录
        /// </summary>
        /// <param name="mallGoodsFreightId"></param>
        /// <returns></returns>
        Task<MallGoodsFreightEntity> GetEntityAsync(long mallGoodsFreightId);

        /// <summary>
        /// 查询商城商品运费记录
        /// </summary>
        /// <param name="mallShopNo">商城商户编号</param>
        /// <param name="goodsSource">商品来源（商城/仓库）</param>
        /// <param name="transportBusinessType">业务类型（同城/小件）</param>
        /// <param name="freightType">配送方式（急速/快运/一般）</param>
        /// <param name="goodsSku">商品SKU</param>
        /// <param name="goodsName">商品名称</param>
        /// <param name="goodsWeight">商品重量</param>
        /// <param name="goodsVolume">商品体积</param>
        /// <param name="goodsLength">商品长度</param>
        /// <param name="goodsWidth">商品宽度</param>
        /// <param name="goodsHeight">商品高度</param>
        /// <param name="goodsCount">商品数量</param>
        /// <param name="goodsPrice">商品单价</param>
        /// <param name="goodsUnit">商品单位</param>
        /// <param name="isMonthPay">月结</param>
        /// <param name="startPrice">起步价</param>
        /// <param name="startMileage">起步里程</param>
        /// <param name="everyMileagePrice">续l里程价格</param>
        /// <param name="provinceCode">省份编码</param>
        /// <param name="cityCode">城市编码</param>
        /// <param name="countyCode">区县编码</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">页记录数</param>
        /// <returns></returns>
        Task<(IEnumerable<MallGoodsFreightEntity>, int)> GetListAsync(string mallShopNo, string goodsSource, string transportBusinessType, string freightType, string goodsSku, string goodsName, decimal? goodsWeight, decimal? goodsVolume, decimal? goodsLength, decimal? goodsWidth, decimal? goodsHeight, int? goodsCount, decimal? goodsPrice, string goodsUnit, bool? isMonthPay, decimal? startPrice, int? startMileage, decimal? everyMileagePrice, string provinceCode, string cityCode, string countyCode, int pageIndex, int pageSize);


        /// <summary>
        /// 添加新商城商品运费纪录
        /// </summary>
        /// <param name="mallGoodsFreightEntity"></param>
        /// <returns></returns>
        Task<MallGoodsFreightEntity> InsertAsync(MallGoodsFreightEntity entity);


        /// <summary>
        /// 修改商城商品运费记录
        /// </summary>
        /// <param name="mallGoodsFreightEntity"></param>
        /// <returns></returns>
        Task<MallGoodsFreightEntity> UpdateAsync(MallGoodsFreightEntity entity);
    }
}